<?php

/**
 * This is the model class for table "usuario".
 *
 * The followings are the available columns in table 'usuario':
 * @property integer $id_usuario
 * @property string $email
 * @property string $senha
 * @property string $nome_completo
 * @property string $perfil
 * @property string $centro_de_operacao
 * @property string $orgao
 * @property string $email_responsavel_orgao
 * @property string $telefone_responsavel_orgao
 * @property string $outras_informacoes
 *
 * The followings are the available model relations:
 * @property Atividade[] $atividades
 */
class Usuario extends CActiveRecord {

    public $confirmarSenha;

    /**
	 * Returns the static model of the specified AR class.
	 * @param string $className active record class name.
	 * @return Usuario the static model class
	 */
	public static function model($className = __CLASS__) {
        return parent::model($className);
	}

	/**
	 * @return string the associated database table name
	 */
	public function tableName() {
        return 'usuario';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules() {
        return array(
            array('email', 'required', 'message' => 'Digite um email válido'),
            array('email, email_responsavel_orgao', 'email', 'message' => 'Digite um email válido'),
            array('email', 'unique', 'message' => 'E-mail já cadastrado'),

            array('senha', 'required', 'message' => 'Digite uma senha válida'),
            array('senha', 'match', 'pattern'=>'/(.*[A-Za-z].*[0-9].*|.*[0-9].*[A-Za-z].*)/', 'message' => 'Digite uma senha que possua pelo menos 1 letra e 1 número'),
            array('senha', 'length', 'min' => 6, 'tooShort' =>'Digite uma senha com no mínimo 6 caracteres'),
            array('confirmarSenha', 'compare', 'compareAttribute' => 'senha', 'message' =>'Senha e confirmação de senha precisam ser iguais'),

            array('nome_completo', 'required', 'message' => 'Digite um nome válido'),
            array('perfil', 'required', 'message' => 'Selecione um perfil válido'),

            array('email, nome_completo, email_responsavel_orgao, outras_informacoes', 'length', 'max' => 128, 'message' => 'Digite uma informação com no máximo 128 caracteres'),
            array('senha, centro_de_operacao, orgao', 'length', 'max' => 32, 'message' => 'Digite uma informação com no máximo 32 caracteres'),
            array('perfil, telefone_responsavel_orgao', 'length', 'max' => 16, 'message' => 'Digite uma informação com no máximo 16 caracteres'),

            array('id_usuario, email, senha, nome_completo, perfil, centro_de_operacao, orgao, email_responsavel_orgao, telefone_responsavel_orgao, outras_informacoes', 'safe', 'on' => 'index'),
        );
	}

	/**
	 * @return array relational rules.
	 */
	public function relations() {
        return array(
            'atividades' => array(self::HAS_MANY, 'Atividade', 'id_usuario'),
        );
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels() {
        return array(
            'id_usuario' => 'Identificador de usuário',
            'email' => 'E-mail',
            'senha' => 'Senha',
            'nome_completo' => 'Nome completo',
            'perfil' => 'Perfil',
            'centro_de_operacao' => 'Centro de operação',
            'orgao' => 'Órgão',
            'email_responsavel_orgao' => 'E-mail do responsável pelo órgão',
            'telefone_responsavel_orgao' => 'Telefone do responsável pelo órgão',
            'outras_informacoes' => 'Outras informações',
            'confirmarSenha' => 'Confirmar senha'
        );
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
	 */
	public function getFilterDataProvider() {
		$criteria = new CDbCriteria;
        $criteria->compare('nome_completo', $this->nome_completo, true);
        $criteria->compare('email', $this->email, true);
		$criteria->compare('perfil', $this->perfil, true);

		return new CActiveDataProvider($this, array('criteria' => $criteria));
	}
}